<template>
  <div v-if="detailInfo.nm">
    <div>这是详情页面 - {{ $route.params.id }}</div>
    <div>电影名称: {{ detailInfo.nm }}</div>
    <img :src="detailInfo.img.split('/w.h').join('/200.300')" alt="" />
    <button @click="guess">猜你喜欢</button>
  </div>
  <div v-else>loading...</div>
</template>

<script>
// import { detailApi } from "@/api/detail.js";
// import NProgress from "nprogress";
import { mapState, mapActions } from "vuex";

export default {
  // computed: mapState(["detailInfo"]),
  computed: mapState({
    detailInfo: (state) => state.detail.detailInfo,
  }),
  mounted() {
    this.asyncGetDetail({ id: this.$route.params.id });
  },
  methods: {
    ...mapActions("detail", ["asyncGetDetail"]),
  },
  // data() {
  //   return {
  //     detailInfo: {},
  //   };
  // },
  // methods: {
  //   guess() {
  //     this.$router.push("/detail/1282401");
  //   },
  // },
  // mounted() {
  //   this.getDetailData();
  // },
  // methods: {
  //   async getDetailData() {
  //     const res = await detailApi({ id: this.$route.params.id });
  //     console.log(res);
  //     this.detailInfo = res.result;
  //   },
  // },
  // beforeCreate() {
  //   console.log("beforeCreate", this);
  // },
  // async beforeRouteEnter(to, from, next) {
  //   // 在渲染该组件的对应路由被验证前调用
  //   // 不能获取组件实例 `this` ！
  //   // 因为当守卫执行时，组件实例还没被创建！

  //   // 请求数据，请求完毕以后再调用next
  //   // 解决在网速比较慢的情况下白屏的问题
  //   NProgress.start();
  //   const res = await detailApi({ id: to.params.id });
  //   NProgress.done();
  //   // this.detailInfo = res.result;
  //   // 在beforeRouteEnter的next里面允许我们写一个回调函数的
  //   next((vm) => (vm.detailInfo = res.result));
  // },
  // async beforeRouteUpdate(to, from) {
  //   // console.log("beforeRouteUpdate");
  //   // 在当前路由改变，但是该组件被复用时调用
  //   // 举例来说，对于一个带有动态参数的路径 `/users/:id`，在 `/users/1` 和 `/users/2` 之间跳转的时候，
  //   // 由于会渲染同样的 `UserDetails` 组件，因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
  //   // 因为在这种情况发生的时候，组件已经挂载好了，导航守卫可以访问组件实例 `this`

  //   // 主要来代替之前的watch: {$route() {}}
  //   const res = await detailApi({ id: to.params.id });
  //   this.detailInfo = res.result;
  // },
  // beforeRouteLeave(to, from) {
  //   console.log("beforeRouteLeave");
  //   // 在导航离开渲染该组件的对应路由时调用
  //   // 与 `beforeRouteUpdate` 一样，它可以访问组件实例 `this`
  //   const answer = window.confirm(
  //     "Do you really want to leave? you have unsaved changes!"
  //   );
  //   if (!answer) return false;
  // },
};
</script>

<style>
#nprogress {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999;
  width: 100% !important;
}

#nprogress .bar {
  height: 5px !important;
  background: blue;
}
</style>
